home *** CD-ROM | disk | FTP | other *** search
- LISTING 3
-
- #include <stdio.h>
- #include <string.h>
- #include <Mrm/MrmAppl.h>
-
- void s_error();
- void set_window_title();
- void GPcallback();
-
- extern void new_buffer();
- extern void load_file();
- extern void save_file();
- extern void saveas_file();
- extern void exit_editor();
- extern void create_text_widget();
-
- MrmHierarchy s_MrmHierarchy;
- char *vec[] = {"editor.uid"};
-
- MRMRegisterArg regvec[] = {
- {"GPcallback", (caddr_t)GPcallback},
- {"new_buffer", (caddr_t)new_buffer},
- {"load_file", (caddr_t)load_file},
- {"save_file", (caddr_t)save_file},
- {"saveas_file", (caddr_t)saveas_file},
- {"exit_editor", (caddr_t)exit_editor},
- {"create_text_widget", (caddr_t)create_text_widget},
- };
- MrmCount regnum = sizeof(regvec) / sizeof(MRMRegisterArg);
-
- #define MAX_TITLE_LEN 128
- char wintitle[MAX_TITLE_LEN];
-
- Widget toplevel;
-
- void
- main(argc, argv)
- int argc;
- char *argv[];
- {
- Widget editormain;
- char *charptr;
- MrmCode class;
-
- MrmInitialize();
- toplevel = XtInitialize("editor", "Editor", NULL, 0, &argc, argv);
-
- if (MrmOpenHierarchy(1, vec, NULL, &s_MrmHierarchy) != MrmSUCCESS)
- s_error("can't open hierarchy");
- if (MrmRegisterNames(regvec, regnum) != MrmSUCCESS)
- s_error("can't register names");
- if (MrmFetchWidget(s_MrmHierarchy, "editor_main",
- toplevel, &editormain, &class) != MrmSUCCESS)
- s_error("can't fetch widget");
-
- XtManageChild(editormain);
- XtRealizeWidget(toplevel);
-
- XFetchName(XtDisplay(toplevel), XtWindow(toplevel), &charptr);
- strcpy(wintitle, charptr);
- set_window_title("Untitled");
-
- XtMainLoop();
- }
-
- void
- GPcallback(w, client_data, call_data)
- Widget w;
- char * client_data;
- caddr_t call_data;
- {
- Widget dialogs;
- MrmCode class;
-
- if (MrmFetchWidget(s_MrmHierarchy, client_data, toplevel,
- &dialogs, &class) != MrmSUCCESS)
- s_error("can't fetch widget in GPcallback\n");
- XtManageChild(dialogs);
- }
-
- void
- set_window_title(s)
- char *s;
- {
- char newtitle[MAX_TITLE_LEN];
-
- strcpy(newtitle, wintitle);
- strcat(newtitle, " - ");
- strcat(newtitle, s);
- XStoreName(XtDisplay(toplevel), XtWindow(toplevel), newtitle);
- }
-
- void
- s_error(s)
- char *s;
- {
- printf("%s\n", s);
- exit(1);
- }
-